package com.zhaokuner.pm.common.utils;

import org.springframework.cglib.beans.BeanCopier;
import org.springframework.cglib.core.Converter;

/**
 * <p>
 * Description:bean copy
 * <p>
 * Copyright: 2018-现在 北京掌通未来科技有限公司
 * <p>
 *
 * @author 赵希坤 zhaoxikun
 * @date 2020/7/24 17:23
 */
public class MyBeanUtils {
    /**
     * 对象copy工具函数（由于BeanCopier的create本身已经做了缓存，所以不用再专门去做）
     *
     * @param source 源对象
     * @param target 目标对象
     */
    public static void copy(Object source, Object target) {
        if (source == null || target == null) {
            return;
        }
        BeanCopier beanCopier = BeanCopier.create(source.getClass(), target.getClass(), false);
        beanCopier.copy(source, target, null);
    }

    /**
     * 对象copy工具函数（由于BeanCopier的create本身已经做了缓存，所以不用再专门去做）
     *
     * @param source    源对象
     * @param target    目标对象
     * @param converter 类型转换器
     */
    public static void copy(Object source, Object target, Converter converter) {
        if (source == null || target == null) {
            return;
        }
        BeanCopier beanCopier = BeanCopier.create(source.getClass(), target.getClass(), true);
        beanCopier.copy(source, target, converter);
    }
}
